// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "GameFramework/HUD.h"

#include "LyraHUD.generated.h"

namespace EEndPlayReason { enum Type : int; } // 前向声明结束游戏原因枚举

class AActor;
class UObject;

/**
 * ALyraHUD
 *
 *  注意：通常你不需要扩展或修改这个类，相反你可以在你的体验中使用"添加控件"操作来添加HUD布局和控件
 * 
 *  这个类主要存在于调试渲染
 */
UCLASS(Config = Game)
class ALyraHUD : public AHUD
{
	GENERATED_BODY()

public:
	ALyraHUD(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); // 构造函数

protected:

	//~UObject 接口
	/**
	 * 预初始化组件
	 */
	virtual void PreInitializeComponents() override;
	//~UObject 接口结束

	//~AActor 接口
	/**
	 * 开始播放
	 */
	virtual void BeginPlay() override;
	/**
	 * 结束播放
	 * @param EndPlayReason 结束播放的原因
	 */
	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
	//~AActor 接口结束

	//~AHUD 接口
	/**
	 * 获取调试角色列表
	 * @param InOutList 输入输出列表
	 */
	virtual void GetDebugActorList(TArray<AActor*>& InOutList) override;
	//~AHUD 接口结束
};